﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ecommerce.Model;
using Ecommerce.Web.Code;
using Ecommerce.Utils;
using System.Web.Security;

namespace Ecommerce.Web.Cliente
{
    public partial class CadastroPF : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string cpfCnpj = Request.QueryString["cod"];
                string tipoUsuario = Request.QueryString["tpUsu"];

                if (tipoUsuario.Equals("pfi"))
                {
                    txtCPF.Text = cpfCnpj;
                    rbPF.Checked = true;
                    rbPJ.Enabled = false;
                    txtCPF.Enabled = false;
                    box_dados_gerais_pf.Visible = true;
                    box_dados_gerais_pj.Visible = false;
                }
                else {
                    txtCNPJ.Text = cpfCnpj;
                    rbPJ.Checked = true;
                    rbPF.Enabled = false;
                    txtCNPJ.Enabled = false;
                    box_dados_gerais_pf.Visible = false;
                    box_dados_gerais_pj.Visible = true;
                }

                this.CarregarUF();
                this.CarregarTipoEndereco();
            }
        }

        private void CarregarTipoEndereco()
        {
            ddlTipoEndereco.DataSource = EnderecoModel.Instance.ListarTipoEndereco();
            ddlTipoEndereco.DataValueField = "ten_idt_tipo_endereco";
            ddlTipoEndereco.DataTextField = "ten_des_tipo_endereco";
            ddlTipoEndereco.DataBind();
        }

        private void CarregarUF()
        {
            ddlUF.DataValueField = "Key";
            ddlUF.DataTextField = "Value";
            ddlUF.DataSource = UfModel.Instance.Listar();
            ddlUF.DataBind();
        }

        protected void cvEmail_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (PessoaModel.Instance.LoginCadastrado(args.Value.Trim()))
                args.IsValid = false;
            else
                args.IsValid = true;
        }

        protected void cvCpf_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (ValidarDocumento.CPF(args.Value))
            {
                if (PessoaFisicaModel.Instance.CPFCadastrado(args.Value))
                {
                    args.IsValid = false;
                    cvCpf.ErrorMessage = "CPF já cadastrado";
                }
                else
                    args.IsValid = true;
            }
            else
            {
                args.IsValid = false;
                cvCpf.ErrorMessage = "CPF inválido";
            }
        }

        protected void lbSalvar_Click(object sender, EventArgs e)
        {
            Page.Validate();
            if (Page.IsValid)
            {
                // DADOS DE PESSOA
                tb_pes_pessoa pes = new tb_pes_pessoa();
                pes.pes_dat_criacao = DateTime.Now;
                pes.pes_flg_ativo = true;
                pes.pes_flg_pessoa_fisica = box_dados_gerais_pf.Visible;
                pes.pes_des_login = txtEmail.Text.Trim();
                pes.pes_des_senha = txtSenha.Text.Trim();

                // DADOS DO ENDEREÇO
                tb_end_endereco end = new tb_end_endereco();
                end.end_dat_criacao = DateTime.Now;
                end.end_des_bairro = txtBairro.Text.Trim();
                end.end_des_complemento = txtComplemento.Text;
                end.end_nom_cidade = txtCidade.Text.Trim();
                end.end_nom_logradouro = txtEndereco.Text.Trim();
                end.end_num_cep = txtCEP.Text.Trim().Replace("-", "");
                end.end_num_endereco = int.Parse(txtNumero.Text);
                end.end_sig_uf = ddlUF.SelectedValue;
                end.ten_idt_tipo_endereco = Convert.ToInt32(ddlTipoEndereco.SelectedValue);
                pes.tb_end_endereco.Add(end);

                // DADOS DO TELEFONE
                tb_tel_telefone tel = new tb_tel_telefone();
                tel.tel_dat_criacao = DateTime.Now;
                tel.tel_num_ddd = txtDDD.Text;
                tel.tel_num_telefone = int.Parse(txtTelefone.Text);
                tel.tte_idt_tipo_telefone = PessoaModel.Instance.ListarTipoTelefone().Where(x => x.tte_cod_tipo_telefone.Equals("TRA")).First().tte_idt_tipo_telefone;
                pes.tb_tel_telefone.Add(tel);

                if (box_dados_gerais_pf.Visible)
                {
                    pes.tb_pfi_pessoa_fisica = new tb_pfi_pessoa_fisica();
                    pes.tb_pfi_pessoa_fisica.pfi_cod_sexo = rbFeminino.Checked ? "F" : "M";
                    pes.tb_pfi_pessoa_fisica.pfi_nom_pessoa_fisica = txtNome.Text.Trim();
                    pes.tb_pfi_pessoa_fisica.pfi_num_cpf = txtCPF.Text.Trim().Replace(".", "").Replace("-", "");
                    pes.tb_pfi_pessoa_fisica.pfi_num_rg = txtRG.Text.Trim();
                    pes.tb_pfi_pessoa_fisica.pfi_des_email = txtEmail.Text.Trim();
                    pes.tb_pfi_pessoa_fisica.tpf_idt_tipo_pessoa_fisica = PessoaFisicaModel.Instance.ListarTipoPessoaFisica().Where(x => x.tpf_cod_tipo_pessoa_fisica.Equals("PFI")).First().tpf_idt_tipo_pessoa_fisica;
                    PessoaFisicaModel.Instance.Inserir(pes);
                }
                else
                {
                    pes.tb_pju_pessoa_juridica = new tb_pju_pessoa_juridica();
                    pes.tb_pju_pessoa_juridica.pju_des_razao_social = txtRazaoSocial.Text;
                    pes.tb_pju_pessoa_juridica.pju_num_cnpj = txtCNPJ.Text;
                    pes.tb_pju_pessoa_juridica.pju_num_inscricao_estadual = txtIE.Text;
                    pes.tb_pju_pessoa_juridica.pju_nom_contato = txtNomeContato.Text;
                    PessoaJuridicaModel.Instance.Inserir(pes);
                }

                Session["usuario"] = pes;
                FormsAuthentication.SetAuthCookie(pes.pes_idt_pessoa.ToString(), false);
                Response.Redirect("~/default.aspx");
            }
        }
    }
}